import type { NamePath } from 'ant-design-vue/lib/form/interface';
// 从'ant-design-vue/lib/form/interface'中导入NamePath类型

import type { ColProps } from 'ant-design-vue/lib/grid/Col';
// 从'ant-design-vue/lib/grid/Col'中导入ColProps类型

import type { HTMLAttributes, VNodeChild } from 'vue';
// 从Vue中导入HTMLAttributes和VNodeChild类型

export interface FormItem {
  /**
   * 与标签一起使用，是否在标签文本后显示冒号。
   * @default true
   * @type boolean
   */
  colon?: boolean;
  // 是否显示冒号

  /**
   * 额外的提示消息。类似于帮助信息。用法示例：同时显示错误消息和提示消息。
   * @type any (string | slot)
   */
  extra?: string | VNodeChild | JSX.Element;
  // 额外的提示消息

  /**
   * 与validateStatus一起使用，此选项指定验证状态图标。建议仅与Input一起使用。
   * @default false
   * @type boolean
   */
  hasFeedback?: boolean;
  // 是否有反馈图标

  /**
   * 提示消息。如果未提供，将由验证规则生成。
   * @type any (string | slot)
   */
  help?: string | VNodeChild | JSX.Element;
  // 帮助消息

  /**
   * 标签文本
   * @type any (string | slot)
   */
  label?: string | VNodeChild | JSX.Element;
  // 标签文本

  /**
   * 标签的布局。您可以设置span偏移量，类似于{span: 3, offset: 12}或sm: {span: 3, offset: 12}，与<Col>相同。
   * @type Col
   */
  labelCol?: ColProps & HTMLAttributes;
  // 标签的布局

  /**
   * 是否提供或不提供，将由验证规则生成。
   * @default false
   * @type boolean
   */
  required?: boolean;
  // 是否必填

  /**
   * 验证状态。如果未提供，将由验证规则生成。选项：'success' 'warning' 'error' 'validating'
   * @type string
   */
  validateStatus?: '' | 'success' | 'warning' | 'error' | 'validating';
  // 验证状态

  /**
   * 输入控件的布局，与labelCol相同
   * @type Col
   */
  wrapperCol?: ColProps;
  // 输入控件的布局

  /**
   * 设置子标签的htmlFor属性。
   */
  htmlFor?: string;
  // 子标签的htmlFor属性

  /**
   * 标签的文本对齐方式
   */
  labelAlign?: 'left' | 'right';
  // 标签的文本对齐方式

  /**
   * 模型的键。在验证和resetFields方法的设置中，此属性是必需的。
   */
  name?: NamePath;
  // 模型的键

  /**
   * 表单的验证规则
   */
  rules?: object | object[];
  // 表单的验证规则

  /**
   * 是否自动关联表单字段。在大多数情况下，您可以设置自动关联。
   * 如果不满足自动关联条件，可以手动关联。请参阅下面的说明。
   */
  autoLink?: boolean;
  // 是否自动关联表单字段

  /**
   * 是否在此字段的第一个错误规则上停止验证。
   */
  validateFirst?: boolean;
  // 是否在第一个错误规则上停止验证

  /**
   * 何时验证子节点的值
   */
  validateTrigger?: string | string[] | false;
  // 验证子节点的值的触发时机
}
// FormItem接口定义，包含表单项的各种配置属性
